Controller 放的是請求處理邏輯。
除了在單一的 routes.php 檔案中定義所有的請求處理邏輯,一般來說其實會用Controller 來組織。
Return api response
<?php
namespace App\Http\Controllers;
use App\Services\ProductService;
use App\Http\Controllers\Controller;
class ProductController extends Controller
{
protected $productService;
public function get()
{
$data = $this->productService->get();
return response()->json($data);
}
}
return view(視圖)- 前後端在一起的話
public function showProfile($id)
{
return view('user.profile', ['user' => User::findOrFail($id)]);
}
在第10天討論Route的時候提到的Resource Route,在laravel 中有定義Resource Controller會有的行為
Verb | URI | Action | Route Name |
---|---|---|---|
GET | /photos | index | photos.index |
GET | /photos/create | create | photos.create |
POST | /photos | store | photos.store |
GET | /photos/{photo} | show | photos.show |
GET | /photos/{photo}/edit | edit | photos.edit |
PUT/PATCH | /photos/{photo} | update | photos.update |
DELETE | /photos/{photo} | destroy | photos.destroy |
step1.
下指令或是自己建立一個Controller,下指令的話七個行為都會一併被建立在Controller裡面(可以視需求拿掉不需要的Action)
php artisan make:controller PhotoController --resource
step2.
在Resource 中註冊Controller (會使用關鍵字 resource)
Route::resource('photos', 'PhotoController');
可以用only or except 保留需要或沒用到的action
Route::resource('photos', 'PhotoController')->only([
'index', 'show'
]);
Route::resource('photos', 'PhotoController')->except([
'create', 'store', 'update', 'destroy'
]);
甚至有提供如果只需要api而不用view的route指令和註冊方法
Route::apiResource('photos', 'PhotoController');
php artisan make:controller API/PhotoController --api
還有其他像改名字之類的細節,如果需要更詳細的使用方式可參考 Laravel Resource Controllers
結論: 一般如果是遵循restful API的設計方式,使用laravel提供的定義和方法會很方便,大家的定義方式也會比較統一跟直覺,而且他其實可以只選擇需要的方法存在,使用上也很彈性。
參考連結: